home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / BBS-Archive / Dev / GNU-TILE-FORTH.lha / src / io.h < prev    next >
C/C++ Source or Header  |  1992-05-19  |  2KB  |  94 lines

  1. /*
  2.   C BASED FORTH-83 MULTI-TASKING IO MANAGEMENT DEFINITIONS
  3.  
  4.   Copyright (C) 1988-1990 by Mikael R.K. Patel
  5.  
  6. */
  7.  
  8.  
  9. /* INCLUDE FILES: STANDARD INPUT/OUTPUT */
  10.  
  11. #include <stdio.h>
  12.  
  13.  
  14. /* STANDARD INPUT AND OUTPUT DESCRIPTORS */
  15.  
  16. #define STDIN  0
  17. #define STDOUT 1
  18.  
  19.  
  20. /* WHITE SPACE DEFINITION, CHARACTER MASK AND DIRECTORY SEPERATOR */
  21.  
  22. #define ISSPACE(c) ((c) <= ' ')
  23. #define CMASK 0377
  24. #define DIRSEPCHAR '/'
  25.  
  26.  
  27. /* INFILE BUFFER DEFINITION */
  28.  
  29. #define BUFSIZE 1024
  30.  
  31. typedef struct {
  32.     CSTR fn;
  33.     INT  ln;
  34.     INT  fd;
  35.     INT  bufp;
  36.     INT  cc;
  37.     CHAR buf[BUFSIZE];
  38. } file_buffer, *INFILE_BUFFER;
  39.  
  40. extern INFILE_BUFFER io_infstack[];
  41. extern INT io_infsp;
  42.  
  43.  
  44. /* OUTFILE AND ERROR FILE DEFINITION */
  45.  
  46. extern FILE *io_outf;
  47. extern FILE *io_errf;
  48.  
  49.  
  50. /* APPEND ORDER FOR IO_PATH */
  51.  
  52. #define IO_PATH_FIRST 0
  53. #define IO_PATH_LAST 1
  54.  
  55.  
  56. /* IO MANAGE ERROR CODES */
  57.  
  58. #define IO_NO_ERROR 0
  59. #define IO_EOF -1
  60. #define IO_PATH_DEFINED -1
  61. #define IO_FILE_INCLUDED -1
  62. #define IO_UNKNOWN_FILE -2
  63. #define IO_UNKNOWN_PATH -2
  64. #define IO_TOO_MANY_PATHS -3
  65. #define IO_TOO_MANY_FILES -3
  66.  
  67.  
  68. /* EXPORTED MACROS, FUNCTIONS, AND PROCEDURES */
  69.  
  70. #define io_getchar() \
  71.     ((io_infstack[io_infsp] -> bufp < io_infstack[io_infsp] -> cc) ? \
  72.      (long) io_infstack[io_infsp] -> buf[io_infstack[io_infsp] -> bufp++] & CMASK : \
  73.      (long) io_fillbuf())
  74.  
  75. #define io_eof() (io_infsp == -1)
  76. #define io_not_eof() (io_infsp > -1)
  77.  
  78. #define io_source() (io_infstack[io_infsp] -> fn)
  79. #define io_line() (io_infstack[io_infsp] -> ln)
  80. #define io_newline() (++io_line())
  81.  
  82. INT  io_path();
  83. INT  io_infile();
  84. INT  io_fillbuf();
  85.  
  86. VOID io_flush();
  87.  
  88. VOID io_skip();
  89. VOID io_scan();
  90. VOID io_skipspace();
  91.  
  92. VOID io_initiate();
  93. VOID io_finish();
  94.